Network connections are referred to as bursty when they experience brief periods of high throughput interspersed with periods of idleness or quiescence, i.e., having little or no data flow. Transmission Control Protocol (TCP) network congestion control algorithms are commonly used to limit packet loss when the network becomes congested. Some such algorithms respond to a burst of network traffic over a particular connection by gradually ramping up a congestion window size which represents the number unacknowledged packets in flight at a particular time. Unfortunately, such network congestion control algorithms impair the throughput of bursty networks because the window size will reset to a low value, e.g., to one, after the connection is idle or quiescent for a period of time.
For some applications that generate bursty network flows, high throughput and low latency are critical. An example of such an application is checkpoint based fault tolerance. In this application, a primary virtual machine maintains gathers state data and periodically transmits the state data to a secondary virtual machine, e.g., at intervals on the order of tens of milliseconds. While waiting for acknowledgement of the state data, the primary virtual machine may suspend execution of its workload. Upon acknowledgement of receipt by the secondary virtual machine of the state date, the primary virtual machine may resume execution. Accordingly, any delay in transmitting the state data and receiving acknowledgement thereof negatively impacts the performance of the primary virtual machine and/or the transmission rate of state data.